//package cn.nfwx.tv.widget;
//
//import android.content.Context;
//import android.graphics.drawable.Drawable;
//import android.os.Handler;
//import android.os.Message;
//import android.support.annotation.Nullable;
//import android.util.AttributeSet;
//import android.util.Log;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.SeekBar;
//import android.widget.TextView;
//
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Calendar;
//import java.util.Date;
//import java.util.List;
//
//import cn.nfwx.tv.R;
//import cn.nfwx.tv.controller.IjkPlayerViewController;
//import cn.nfwx.tv.controller.PlayerViewController;
//import cn.nfwx.tv.model.TVProgramModel;
//import cn.nfwx.tv.model.TvProgram;
//import cn.nfwx.tv.util.LogUtil;
//import cn.nfwx.tv.util.TimeUtil;
//import cn.nfwx.tv.widget.ijkplayer.IjkVideoView;
//import cn.nfwx.tv.widget.seekbar.Point;
//import cn.nfwx.tv.widget.seekbar.PointSeekBar;
//import p2pproxy.FileTimeInfo;
//
///**
// * Created by dell on 2018/4/11.
// */
//
//public class QpopControllerView extends LinearLayout implements Handler.Callback {
//    private SimpleDateFormat _sf;
//
//    ImageView iv_player_btn;
//    TextView tv_player_time, tv_player_maxtime, btn_tvprogram;
//    PointSeekBar sb_player;
//    IjkVideoView mIjkVideoView;
//    boolean _isLive;
//
//    ControllerListener controllerListener;
//
//    int seekPosition; // 点播移时
//
//    boolean _seeking = false;
//
//    final int live_seek_max = 2 * 60 * 60; // 最大直播时移时长
//    long liveTime;
//    long liveSeekTime;
//
//    private long clipTimeCode;
//
//    private long perTime;
//    private boolean _isFirstInitTime = false;
//
//    private List<TvProgram> mTodayPrograms = new ArrayList<>();
//    private boolean _hasProgramloaded;
//    private boolean _isSeekEnable;
//
//    public void setControllerListener(ControllerListener controllerListener) {
//        this.controllerListener = controllerListener;
//    }
//
//    private Handler mHandler = new Handler(this);
//
//    public QpopControllerView(Context context) {
//        this(context, null);
//    }
//
//    public QpopControllerView(Context context, @Nullable AttributeSet attrs) {
//        this(context, attrs, 0);
//    }
//
//    public QpopControllerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
//        super(context, attrs, defStyleAttr);
//
//        init(context);
//    }
//
//    private void init(Context context) {
//        if (_sf == null) {
//            _sf = new SimpleDateFormat("HH:mm:ss");
//        }
//
//        LayoutInflater.from(context).inflate(R.layout.layout_player_controller, this, true);
//        iv_player_btn = findViewById(R.id.iv_player_btn);
//        tv_player_time = findViewById(R.id.tv_player_time);
//        tv_player_maxtime = findViewById(R.id.tv_player_maxtime);
//        sb_player = findViewById(R.id.sb_player);
//        btn_tvprogram = findViewById(R.id.btn_tvprogram);
//        btn_tvprogram.setText("列表");
//
//        sb_player.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
//            @Override
//            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
//                if (!fromUser) { // 是否人为操作
//                    return;
//                }
//                if (_seeking) {
//                    if (_isLive) {
//                        int len = live_seek_max - progress;
//                        liveSeekTime = liveTime - len;
//                        tv_player_time.setText(TimeUtil.getFormatHHmmssDate((int) liveSeekTime));
//                    } else {
//                        seekPosition = progress;
//                        tv_player_time.setText(TimeUtil.toTime(progress));
//                    }
//                }
//            }
//
//            @Override
//            public void onStartTrackingTouch(SeekBar seekBar) {
//                if (controllerListener != null) {
//                    controllerListener.onStartTrackingTouch();
//                }
//                _seeking = true;
//                if (_isLive) {
//                    hiddenBubble();
//                    liveTime = mIjkVideoView.getTimeCode() + (live_seek_max - seekBar.getProgress());
//                }
//            }
//
//            @Override
//            public void onStopTrackingTouch(SeekBar seekBar) {
//                if (controllerListener != null) {
//                    controllerListener.onStopTrackingTouch();
//                }
//                if (_seeking) {
//                    _seeking = false;
//                    mIjkVideoView.showLoading();
//                    if (_isLive) {
//                        mIjkVideoView.seekByTimeCode(liveSeekTime);
//                    } else {
//                        mIjkVideoView.seekTo(seekPosition);
//                    }
//                }
//            }
//        });
//
//        sb_player.setPointSeekBarListener(new PointSeekBar.PointSeekBarListener() {
//            @Override
//            public void seekToPoint(Point point) {
//                _seeking = false;
//                // 返回到对应的时间轴
//                //_player.setOnSeekCompleteListener(PlayerViewController.getInstance());
//                if (_isLive) {
//                    hiddenBubble();
//                    final long p = (mIjkVideoView.getTimeCode() + (live_seek_max - sb_player.getProgress())) - point.getTime();
//                    mIjkVideoView.seekByTimeCode(point.getTime());
//                    //_player.seekByTimeCode(point.getTime() * 1000D, true, true, true);
//                    sb_player.setProgress((int) (live_seek_max - p));
//                    //seekTime = point.getTime();
//                }
//            }
//        });
//    }
//
//    public void setClickListener(OnClickListener clickListener) {
//        btn_tvprogram.setOnClickListener(clickListener);
//        iv_player_btn.setOnClickListener(clickListener);
//        setOnClickListener(clickListener);
//    }
//
//    public void attach(IjkVideoView ijkVideoView) {
//        mIjkVideoView = ijkVideoView;
//    }
//
//    /**
//     * 暂停按钮
//     */
//    public void stopView() {
//        Log.v("ttt", "stopView()");
//        iv_player_btn.setSelected(true);
//    }
//
//    /**
//     * 播放按钮
//     */
//    public void playView() {
//        iv_player_btn.setSelected(false);
//    }
//
//    /**
//     * 开始时钟
//     */
//    public void startControll() {
//        mHandler.removeCallbacksAndMessages(null);
//        mHandler.post(runnable);
//    }
//
//    /**
//     * 停止时钟
//     */
//    public void stopControll() {
//        mHandler.removeMessages(0);
//    }
//
//    Runnable runnable = new Runnable() {
//        @Override
//        public void run() {
//            mHandler.sendEmptyMessage(0);
//            mHandler.postDelayed(runnable, 1000);
//        }
//    };
//
//    @Override
//    public boolean handleMessage(Message msg) {
//        if (msg.what == 0) {
//            if (!_seeking) {
//                tv_player_maxtime.setText(TimeUtil.toTime((int) mIjkVideoView.getDuration()));
//                if (_isLive) {
//                    if (mIjkVideoView.getTimeCode() > 0) {
//                        refreshSeekBar();
//                        loadProgramSeek();
//                        long time = mIjkVideoView.getTimeCode();
//                        tv_player_time.setText(TimeUtil.getFormatHHmmssDate((int) time));
//                        sb_player.setClickable(true);
//                    } else {
//                        tv_player_time.setText("00:00:00");
//                    }
//                    if (perTime == 0 || perTime >= mIjkVideoView.getTimeCode()) {
//                        perTime = mIjkVideoView.getTimeCode();
//                        mIjkVideoView.showLoading();
//                    } else {
//                        perTime = mIjkVideoView.getTimeCode();
//                        mIjkVideoView.hideLoading();
//                    }
//                } else {
//                    refreshSeekBar();
//                    sb_player.setClickable(true);
//                    sb_player.setMax((int) mIjkVideoView.getDuration());
//                    sb_player.setProgress((int) mIjkVideoView.getCurrentPosition());
//                    tv_player_time.setText(TimeUtil.toTime((int) mIjkVideoView.getCurrentPosition()));
//                    if (!_isLive && TimeUtil.toTime((int) mIjkVideoView.getDuration()).equals(TimeUtil.toTime((int) mIjkVideoView.getCurrentPosition())) && mIjkVideoView.getDuration() != 0) {
//                        mHandler.removeCallbacksAndMessages(null);
//                        if (controllerListener != null) {
//                            controllerListener.playEnd();
//                        }
//                    }
//                    if (perTime == 0 || perTime >= mIjkVideoView.getCurrentPosition()) {
//                        perTime = mIjkVideoView.getCurrentPosition();
//                        mIjkVideoView.showLoading();
//                    } else {
//                        perTime = mIjkVideoView.getCurrentPosition();
//                        mIjkVideoView.hideLoading();
//                    }
//                }
//            }
//        }
//        return false;
//    }
//
//    public void release() {
//        mHandler.removeCallbacksAndMessages(null);
//    }
//
//    public void reset() {
//        sb_player.setProgress(0);
//        tv_player_time.setText(TimeUtil.toTime(0));
//        sb_player.setClickable(false);
//        perTime = 0;
//    }
//
//    public void setLive(boolean live) {
//        _isLive = live;
//        tv_player_maxtime.setVisibility(_isLive ? GONE : VISIBLE);
//        sb_player.setMax(live_seek_max);
//        sb_player.setProgress(_isLive ? live_seek_max : 0);
//        perTime = 0;
//        if (live) {
//            btn_tvprogram.setText("回看");
//        } else {
//            btn_tvprogram.setText("列表");
//        }
//    }
//
//    public void hideTvprogram() {
//        btn_tvprogram.setVisibility(GONE);
//    }
//
//    public void showTvprogram() {
//        btn_tvprogram.setVisibility(VISIBLE);
//    }
//
//    /**
//     * 监听
//     */
//    public interface ControllerListener {
//        void onStartTrackingTouch();
//
//        void onStopTrackingTouch();
//
//        void playEnd();
//    }
//
//    String lastPath;
//
//    /**
//     * 剪切暂停记录对应的位置
//     */
//    public void clipPause() {
//        if (mIjkVideoView != null) {
//            clipTimeCode = mIjkVideoView.getTimeCode();
//        } else {
//            clipTimeCode = -1;
//        }
//        IjkPlayerViewController.getInstance().playPause();
//        lastPath = mIjkVideoView.getPath();
//        mIjkVideoView.isLoad(false);
//        mIjkVideoView.clearScreen();
//        //hiddenBubble();
//    }
//
//    /**
//     * 回复
//     */
//    public void clipResume() {
//        if (sb_player.getMax() == sb_player.getProgress()) {
//            //IjkPlayerViewController.getInstance().playStop();
//            IjkPlayerViewController.getInstance().restart(lastPath);
//        } else {
//            if (mIjkVideoView != null) {
//                if (clipTimeCode == -1) {
//                    //IjkPlayerViewController.getInstance().playStop();
//                    IjkPlayerViewController.getInstance().restart(lastPath);
//                } else {
//                    IjkPlayerViewController.getInstance().playStop();
//                    //mIjkVideoView.setOnSeekCompleteListener(PlayerViewController.getInstance());
//                    mIjkVideoView.seekByTimeCode(clipTimeCode);
//                    IjkPlayerViewController.getInstance().seek();
//                }
//            }
//        }
//    }
//
//
//    /**
//     * 设置节目信息
//     *
//     * @param todayPrograms
//     */
//    public void setProgramSeek(List<TvProgram> todayPrograms) {
//        if (todayPrograms == null) {
//            return;
//        }
//        mTodayPrograms.clear();
//        mTodayPrograms.addAll(todayPrograms);
//        _hasProgramloaded = false;
//    }
//
//    /**
//     * 设置节目信息
//     */
//    public void loadProgramSeek() {
//        if (mTodayPrograms == null || mTodayPrograms.isEmpty() || mIjkVideoView == null
//                || mIjkVideoView.getTimeCode() <= 0 || _hasProgramloaded || !_isLive) {
//            return;
//        }
//
//
//        clearProgramSeek();
//        long timecode = 0;
//        if (sb_player.getProgress() == sb_player.getMax()) {
//            timecode = mIjkVideoView.getTimeCode();
//        } else { // 计算出时间
//            timecode = mIjkVideoView.getTimeCode() + (sb_player.getMax() - sb_player.getProgress());
//        }
//        long pretimecode = timecode - live_seek_max;
//        ArrayList<Point> points = new ArrayList<>();
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//
//        for (TvProgram tvProgram : mTodayPrograms) {
//            String time = tvProgram.getTime();
//            try {
//                Date date = dateFormat.parse(time);
//                long currentTime = date.getTime() / 1000L;
//                int position = (int) ((currentTime - pretimecode) * 100 / live_seek_max);
//                if (position >= 0 && position <= 100) {
//                    points.add(new Point(position, date.getTime() / 1000L, tvProgram.getProgram_name()));
//                }
//            } catch (ParseException e) {
//                e.printStackTrace();
//            }
//        }
//        _hasProgramloaded = true;
//        sb_player.setPoints(points);
//    }
//
//    /**
//     * 刷新一次
//     */
//    public void refreshProgramSeek() {
//        _hasProgramloaded = false;
//        loadProgramSeek();
//    }
//
//    /**
//     * 清除频道信息
//     */
//    public void clearProgramSeek() {
//        if (sb_player != null) {
//            sb_player.clearData();
//            hiddenBubble();
//        }
//    }
//
//    /**
//     * 清除气泡
//     */
//    public void hiddenBubble() {
//        if (sb_player != null) {
//            sb_player.hideBubble();
//        }
//    }
//
//    private void refreshSeekBar() {
//        if (_isSeekEnable) {
//            rankBarThumbVisable();
//        } else {
//            if (_isLive) {
//                rankBarThumbHidden();
//            } else {
//                rankBarThumbVisable();
//            }
//        }
//    }
//
//    /**
//     * 是否支持时间移动
//     *
//     * @param seekEnable
//     */
//    public void setSeekEnable(boolean seekEnable) {
//        _isSeekEnable = seekEnable;
//        rankBarThumbHidden();
//    }
//
//    private void rankBarThumbHidden() {
//        Drawable dr = getResources().getDrawable(R.drawable.bg_r2_00ff);
//        sb_player.setThumb(dr);
//        sb_player.setEnabled(false);
//    }
//
//    private void rankBarThumbVisable() {
//        Drawable dr = getResources().getDrawable(R.mipmap.player_point_nor);
//        sb_player.setThumb(dr);
//        sb_player.setEnabled(true);
//    }
//}
